package com.aliyun.messagemgt.fouraplugin;

import com.aliyun.messagemgt.common.dto.foura.*;
import com.aliyun.messagemgt.common.dto.response.ResultMap;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.RequestBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * 4A相关用户查询接口
 *
 * @author lby
 * @date 2020-12-16
 */
public interface FouraService {

    Map<String, Object> getUser();

    List<DepartmentVo> getAllDepartment();

    ResultMap getOrganizationInfoByParentCode(String orgCode);

    FourAMenu getAuthByUser();

    String getSsoUser(HttpServletRequest request);

    List<OrgInfo> getRootTree();

    PageInfo<UserInfo> getUserByOrgCode(String orgCode, String userName, Integer pageSize, Integer pageNo);

    List<Map<String, Object>> getAllUserInfo(Integer pageSize, Integer pageNo);

    /**
     * 同步4A机构及用户信息
     */
    int sync4AData();

    List<FouraOrgUserInfoDTO> selectUserByOrg(FouraGetUserByOrgQry qry);

    List<FouraGetFirstLevelOrgDTO> getFirstLevelOrgList();

    List<FouraOrgInfoDTO> getOrgListByParentOrgId(FouraGetOrgListByParentIdQry qry);

    /**
     * 分页查询角色
     *
     * @param pageQry
     * @return
     */
    PageInfo<FouraRoleDTO> selectRoleByPage(FouraPageRoleQry pageQry);


    /**
     * 用户组件侧提供查询组织下属岗位接口
     *
     * @param orgId
     * @return
     */
    List<FouraPositionDTO> selectPositionByOrg(Long orgId);

    /**
     * 根据岗位、租户查用户信息
     *
     * @param qry
     * @return
     */
    List<FouraPositionUserInfoDTO> qryUserListByPositionId(FouraPositionUserQry qry);

    /**
     * 根据角色、租户查用户信息
     *
     * @param qry
     * @return
     */
    List<FouraRoleUserInfoDTO> selectUserListByRoleIdListOrAppCodeList(FouraRoleUserQry qry);

    /**
     * 根据用户id/电话号码/邮箱、租户查用户信息
     *
     * @param qry
     * @return
     */
    List<FouraUserInfoDTO> qryUserInfoByUserListOrAppCode(FouraUserQry qry);


    FouraUserInfoDTO checkLogin(FouraUserLoginQry vo);
}
